
public class Cocinero extends Thread{

	private final int idCocinero;
	private int especialidad;
	private boolean ocupado;
	private Pedido pedido;
	private final PlanificadorPedidos planificador;
	private Tiempo tiempo;
	private boolean prendido = true;
	private GUIPlanificador guiPlanificador;
	
	public Cocinero(int idCocinero, PlanificadorPedidos planificador, 
			Tiempo tiempo, GUIPlanificador guiPlanificador){
		this.idCocinero = idCocinero;
		this.planificador = planificador;
		this.tiempo = tiempo;
		this.guiPlanificador = guiPlanificador;
	}
	
	public int getIdCocinero() {
		return idCocinero;
	}

	public int getEspecialidad() {
		return especialidad;
	}

	public void setEspecialidad(int especialidad) {
		this.especialidad = especialidad;
	}
	
	public void setOcupado(boolean ocupado) {
		this.ocupado = ocupado;
	}
	
	public boolean isOcupado() {
		return ocupado;
	}
	
	public Pedido getPedido() {
		return pedido;
	}

	public synchronized void parar() {
		this.prendido = false;
		//destranco el semaforo
		this.planificador.getCombos().release();
	}

	public PlanificadorPedidos getPlanificador() {
		return planificador;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
		this.ocupado = true;
		
		guiPlanificador.cargarCocineros(this);
	}

	public void run() {

		while(prendido){
			try{

				setPedido(this.planificador.cocinarPedido());
				Log.write("Cocinero "+ this.idCocinero + " cocinando pedido:"
							+ this.pedido.getId() );

				if (this.pedido.getNumeroCombo() == this.idCocinero)
				{
					if (!this.pedido.isEspecial())
					{ 
						sleep(1000);
					} else {
						sleep(1500);
					}
				} else {
					if (!this.pedido.isEspecial())
					{ 
						sleep(2000);
					} else {
						sleep(3000);					}
				}								
				Log.write("Cocinero "+ this.idCocinero + " termino pedido: "
							+ this.pedido.getId());
				Log.write("Tiempo de Retorno del pedido " + pedido.getId() + ": " 
								+ (tiempo.getHora().getTime() - pedido.getTiempoInicio().getTime())/1000 + " segundos.");
				this.pedido = null;
				guiPlanificador.cargarCocineros(this);
			}catch (Exception e){
			}
		}
	}
}